#include <maya/MPxCommand.h>
#include <maya/MArgList.h>
#include <maya/MStatus.h>
#include <maya/MObject.h>
#include <maya/MObjectArray.h>

class VGUI {

	class UserInteractionHandler : public MPxCommand{
	private:
		void MessageHandler(const MArgList& args);
		void SetHandler(const MArgList& args);
		void DoHandler(const MArgList& args);

	public:

		virtual MStatus doIt(const MArgList& args) { MessageHandler( args ); return MStatus::kSuccess; }
		virtual MStatus undoIt() { return MStatus::kSuccess; }
		virtual MStatus redoIt() { return MStatus::kSuccess; }
		virtual bool isUndoable() const { return true; }
		virtual bool hasSyntax() const { return true; }
		static LPVOID Instantiate() { return new VGUI::UserInteractionHandler(); }
	};

public:

	static bool Initialize();
	static bool Release();

	class Refresh {

	public:
		static bool Interface(MObject& target);
		static bool ViewServer();
		static bool SynchronizeSelection(MObject& target);
		static bool SelectionParameters(MObject& target);
		static bool ProceduralPopulation(MObject& target);
		static bool DeformationParameters(MObject& target);
	};
};